package cn.zwk.drawing.domain.diagram.model;

import lombok.Data;
import lombok.Builder;

/**
 * 节点能力领域实体
 */
@Data
@Builder
public class NodeCapability {
    
    /**
     * 能力唯一标识
     */
    private String id;
    
    /**
     * 能力显示名称
     */
    private String name;
    
    /**
     * 能力描述
     */
    private String description;
    
    /**
     * 执行脚本类型
     */
    private ScriptType scriptType;
    
    /**
     * 脚本内容或路径
     */
    private String script;
    
    /**
     * 超时时间（秒）
     */
    private Integer timeout;
    
    /**
     * 是否异步执行
     */
    private Boolean async;
    
    /**
     * 脚本参数
     */
    private String parameters;
    
    /**
     * 执行权限要求
     */
    private String requiredRole;
    
    /**
     * 脚本类型枚举
     */
    public enum ScriptType {
        SHELL("shell", "Shell脚本"),
        PYTHON("python", "Python脚本"),
        HTTP("http", "HTTP请求"),
        SQL("sql", "SQL查询"),
        CUSTOM("custom", "自定义脚本");
        
        private final String code;
        private final String description;
        
        ScriptType(String code, String description) {
            this.code = code;
            this.description = description;
        }
        
        public String getCode() { return code; }
        public String getDescription() { return description; }
    }
    
    /**
     * 验证能力配置的有效性
     */
    public boolean isValid() {
        return id != null && name != null && 
               script != null && !script.trim().isEmpty() &&
               timeout != null && timeout > 0;
    }
}